﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Modelo;
using System.Text.RegularExpressions;

namespace Proceso
{
    public class GestorUsuario
    {
        public static bool VerificarUsuario(string usuario)
        {
            string pattern = @"^[a-zA-Z0-9]*$";
            List<Usuario> list = new List<Usuario>();
            list = BaseDatos.BDUsuario.DevolverTodos();
            if (!Regex.IsMatch(usuario, pattern))
            {
                throw new Exception("Introduzca solo numeros");
            }
            if (list != null)
            {
                foreach (var item in list)
                {
                    if (item.NombreDeUsuario.ToString().Equals(usuario))
                        throw new Exception("Este nombre de usuario ya existe");
                }
            }
            return true;
        }
        public static bool VerificarPassword(string password)
        {
            string pattern = @"^[a-zA-Z0-9]*$";
            if (!Regex.IsMatch(password, pattern))
            {
                throw new Exception("Introduzca solo numeros");
            }
            return true;
        }
        public static string Loguearse(string username,string password)
        {
            try
            {
                Usuario usuario = BaseDatos.BDUsuario.Loguearse(username, password);
                if (usuario != null)
                {
                    if (usuario.IdCargo == 3)
                        return "Administrador";
                    if (usuario.IdCargo == 1)
                        return "Vendedor";
                    if (usuario.IdCargo == 4)
                        return "Encargado de almacen";
                }
                else
                    throw new Exception("El username o password son incorrectos");
                return "";
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        public static void RegistrarUsuario(string username,string ci, string password,long cargo)
        {
            try
            {
                Usuario user = new Usuario();
                if (!String.IsNullOrEmpty(username))
                {
                    if (VerificarUsuario(username))
                    {
                        user.NombreDeUsuario = username;
                    }
                }
                else
                    throw new Exception("El username es obligatorio");
                if (!String.IsNullOrEmpty(password))
                {
                    if (VerificarPassword(password))
                    {
                        user.Password = Utilidades.EncriptorAES.Encriptar(password);
                    }
                }
                else
                    throw new Exception("El password es obligatorio");
                user.CI = Int64.Parse(ci);
                user.IdCargo = cargo;
                user.Estado = false;
                
                BaseDatos.BDUsuario.RegistrarUsuario(user);    

            }
            catch (Exception)
            {
                
                throw;
            }
        }
    }
}
